a=100자료형
- 파이썬의 기본자료형은 int, float, bool, str, list, tuple, dict, set 등이 있다.
- 0차원 자료형: int, float, bool
- 1차원 자료형: str, list, tuple, dict, set
0차원
- int형
type(a)int
- float형
a?a=1.2*3type(a)float
- bool형
a=True # 숫자1
b=False # 숫자0type(a)bool
# bool형의 연산
a+b1
- complex형
a=1+2j
b=2-2ja(1+2j)
type(a)complex
a+b(3+0j)
type(a+b)complex
- 형태변환: float -> int
a=3.0
type(a)float
a=int(a)a?a=3.14
int(a)
# 0.14날라가고 3만나옴. 정보의 손실이 있다.3
- 형태변환: int $$ float
a=3
type(a)int
a=float(a)
type(a)float
- 형태변환: bool $$ int/float
(예시1)
a=True
type(a)bool
int(a)1
float(a)1.0
(예시2)
a=1
bool(a)True
(예시3)
a=1.0
bool(a)True
a=0.0
bool(a)False
- 이상한 형태변환도 가능하다
bool(-3.14)True
bool(3.14)True
bool(0)False
bool(3.24342)True
# 위와 같은 코드를 의도적으로 사용하진 않는다. - 형태변환이 항상 가능한 것도 아님
float(3+0j) # 사실상 3+0j= 3이므로 float으로 형변환하면 3.0이 되어야 할 것 같은데 오류가 남TypeError: can't convert complex to float
- 암묵적형변환 (implicit)
(예비학습) implicit의 의미 - 추운날씨 -> 보일러좀 틀자! 명시적(explicit) / 오늘 날씨가 좀 춥지 않아? (implicit) - 짜장면 먹을래? -> 싫어 (explicit) / 난 어제 짜장면 먹었는데… (implicit)
int(True) #명시적1
True * 1 # 암묵적형1
1 * 1.01.0
True+True2
1차원
- str
# 선언
a='br'a'br'
# 연산
# 더하기 연산
a='x'
b='2'a+b'x2'
# 빼기 연산 없다.
a-bTypeError: unsupported operand type(s) for -: 'str' and 'str'
# 곱하기 연산
a*2'xx'
2*a'xx'
# 의미상 맞지 않는 것은 수행되지 않는다.
a='x'
b='y'
a+b'xy'
a*bTypeError: can't multiply sequence by non-int of type 'str'
# 나눗셈연산은 없다.
a='xx'
a/2TypeError: unsupported operand type(s) for /: 'str' and 'int'
인덱싱
- str은 하나의 벡터 문자가 여러개 있는 형태라고 생각하기
a='boram'
a'boram'
- 5개의 칸에 글씨가 하나씩 들어가 있음
a[0] # 0이 첫번쨰 원소'b'
a[1] # 두번째 원소'o'
# 마지막 원소를 호출하려면 -1로 호출할 수도 있다.
a[-1]'m'
a[4]'m'
a[-2]
# 마지막에서 2번째 원소는 -2로 호출 가능'a'
- 어려개의 원소는
:을 이용하여 호출할 수 있음
a[0:3] # a[0], a[1], a[2]까지만 뽑힌다. a[3]은 호출되지 않는다.'bor'
a[1:3]'or'
- index=1부터 시작해서 마지막 원소까지 호출하려면?
a[5]IndexError: string index out of range
a[1:5] # a[5]는 없는데,, 이렇게 쓰니까 헷갈릴 수 있다.'oram'
a[1:-1] # 이것은 a[1:4] 와 같음'ora'
# 해결책! 생략한다.
a[1:]'oram'
- 생략의 응용1
a='k-pop'
a'k-pop'
a[2:]'pop'
a[2:5]'pop'
- 생략의 응용2
a='k-pop'
a'k-pop'
a[0:2]'k-'
a[:2] # 앞을 생략하면 첫 원소부터 나온다.'k-'
- 생략의 응용3
a='k-pop'
a'k-pop'
a[:]'k-pop'
a[0:5]'k-pop'
str특수기능
- 파이썬의 변수는 단순히 정보를 담는 그릇이 아니다. 유용한 기능을 제공하는 경우가 있다.
a='ABCD' #a라는 변수는 'ABCD'라는 정보를 담는 그릇의 역할만 하지 않고, 특화된 어떠한 기능도 제공한다.
a'ABCD'
a.lower() #소문자변환'abcd'
# lower()는 문자열에 특화된 기능이며 아래 내용은 안됨
a=3.14
a.lower()AttributeError: 'float' object has no attribute 'lower'
- 자료형에 특화된 기능(=함수)을 확인하는 방법 a. + tab 으로 목록 확인 가능
a='boram'a.lower?a.upper() # 대문자 변환
# upper(a)'BORAM'
a.capitalize()'Boram'
- 마음의눈: a.f() 형태를 읽는 팁 - a.f()는 f(a)로 생각하면 편리함 - a.f(2)는 f(a,2)로 생각하면 편리함 - 이런점에서 R %>% 연산자와 비슷하다고 생각할 수 있다. (약간 다름)
- 사실 .은 좀 더 다양한 상황에서 쓰일 수 있다. 변수이름.함수이름() 의 형태가 아니라 - 패키지이름.함수이름() - 패키지이름.변수이름 - 패키지이름.패키지이름.함수이름()
… 와 같이 다양한 형태가 가능하다. 근본적인 고통점은 .을 기준으로 상위개념.하위개념으로 이해하는 것이 좋다.
0차원 vs 1차원
- len 함수 : 원소의 갯수를 알려주는 함수
(0차원) len함수가 동작하지 않는다.
a=3.14
len(a)TypeError: object of type 'float' has no len()
b=True
len(b)TypeError: object of type 'bool' has no len()
(1차원) len함수가 잘 동작함
a='3.14'
len(a)4
b=[1,2,3]
len(b)3
숙제
a='BoramKim'
a'BoramKim'
a[:5]'Boram'
a[5:]'Kim'